/* 工具 */
import util from '@/common/js/util.js';
import api from '@/common/js/api.js';
import {separator, imageDomain} from '@/common/js/resource.js';

export default {
	test(callback) {
		console.log('工具-test in', callback)
	},
	// 页面跳转
	pageTo(path, data) {
		if (!data) vk.navigateTo(path);
		else {
			vk.navigateTo({
				url: path,
				success: (res) => {
					// 通过eventChannel向被打开页面传送数据
					res.eventChannel.emit('data', data)
				}
			})
		}
	},

	// 组装PDF访问的路径
	getPdfUrl(filepath) {
		let fileUrl = filepath; // pdf路径
		let viewerUrl = window.location.pathname +
		'static/hybrid/pdf.html'; // hybrid路径 pdf预览组件。前置斜杠在window.location.pathname中
		let webviewUrl; // web-view调用路径

		webviewUrl = `${viewerUrl}?url=${encodeURIComponent(fileUrl)}`;
		console.log('====$tools webviewUrl====', webviewUrl)

		return webviewUrl;
	},

	// 检测是否需要登录
	checkLogin() {
		if (vk.pubfn.isNull(vk.getVuex('$user.userInfo'))) {
			// 不关闭页面，直接跳转到登录页，登录成功自动返回当前页面
			vk.navigateToLogin({
				mode: "navigateTo"
			});
		}else{
			return true
		}
	},
	
	// 退出登录到首页
	logout() {
		vk.setVuex('$user.userInfo', {});
		vk.toast('已退出登录', "none", () => {
			vk.navigateToHome();
		})
	},
	// 退出登录并重新登录
	relogin() {
		vk.setVuex('$user.userInfo', {});
		vk.toast('请重新登录', "none", () => {
			vk.navigateToLogin();
		})
	},


	// // 入口：位置授权
	// getAuthorizeInfo(callback) {
	// 	// #ifndef MP
	// 	this.getLocationInfo(callback);
	// 	// #endif
	// 	// #ifdef MP-WEIXIN
	// 	uni.getSetting({ // 检查是否已授权
	// 		success: (res) => {
	// 			// console.log('uni.getSetting', res)
	// 			if (res.authSetting['scope.userLocation']) { // 已授权，调用位置
	// 				this.getLocationInfo(callback);
	// 			} else { // 未授权，发起授权请求
	// 				uni.authorize({
	// 					scope: 'scope.userLocation',
	// 					success: () => { // 允许授权
	// 						this.getLocationInfo(callback);
	// 					},
	// 					fail: () => { // 拒绝授权
	// 						this.openConfirm(callback);
	// 						console.log("拒绝授权")
	// 					}
	// 				})
	// 			}
	// 		},
	// 		fail(err) {
	// 			console.log('位置授权err', err)
	// 			this.$util.toast('fail' + JSON.stringify(err))
	// 			callback(null);
	// 		}
	// 	})
	// 	// #endif
	// },
	// // 当用户第一次拒绝后再次请求授权
	// openConfirm(callback) {
	// 	uni.showModal({
	// 		title: '请求授权当前位置',
	// 		content: '需要获取您的地理位置，请确认授权',
	// 		success: (res) => {
	// 			if (res.confirm) {
	// 				// 确认授权，打开设置界面
	// 				uni.openSetting({
	// 					success: (res) => {
	// 						// console.log('openSetting success', res)
	// 						if (res.authSetting && res.authSetting['scope.userLocation']) {
	// 							this.getLocationInfo(callback);
	// 						} else {
	// 							uni.showToast({
	// 								title: '未授权，无法获得位置信息',
	// 								icon: 'none',
	// 								duration: 1000
	// 							})
	// 							callback(null);
	// 						}
	// 					},
	// 					fail: err => {
	// 						// console.log('openSetting fail', err)
	// 						uni.showToast({
	// 							title: '打开设置界面出错，无法获得位置信息',
	// 							icon: 'none',
	// 							duration: 1000
	// 						})
	// 						callback(null);
	// 					}
	// 				});
	// 			} else if (res.cancel) {
	// 				uni.showToast({
	// 					title: '你拒绝了授权，无法获得位置信息',
	// 					icon: 'none',
	// 					duration: 1000
	// 				})
	// 				callback(null);
	// 			}
	// 		}
	// 	});
	// },

	// // 获取地理位置 使用逆地址解析
	// getLocationInfo(callback) {
	// 	// console.log('getLocation in');
	// 	uni.getLocation({
	// 		type: 'wgs84',
	// 		// geocode: 'true',
	// 		success: (res) => {
	// 			// console.log('当前位置：', res);
	// 			// this.formData.longitude = res.longitude; // 经度116.43213 123.38631725579961
	// 			// this.formData.latitude = res.latitude; // 纬度38.76623 41.838198236313424


	// 			// let location = res.longitude + ',' + res.latitude;
	// 			let location = res.latitude + ',' + res.longitude;
	// 			let data = {
	// 				// key: '4fe6eb2b047b4733fdb399ff39b476f1',
	// 				location,
	// 				ak: getApp().globalData.baiduAK,
	// 				output: 'json',
	// 				coordtype: 'wgs84ll',
	// 			}
	// 			// let url = `https://restapi.amap.com/v3/geocode/regeo`; // 高德
	// 			// https://api.map.baidu.com/reverse_geocoding/v3/?ak=您的ak&output=json&coordtype=wgs84ll&location=31.225696563611,121.49884033194
	// 			let url = `https://api.map.baidu.com/reverse_geocoding/v3/`; // 百度
	// 			vk.request({
	// 				url,
	// 				method: "GET",
	// 				header: {
	// 					"content-type": "application/x-www-form-urlencoded",
	// 				},
	// 				data,
	// 				success: (res) => {
	// 					// console.log('逆地址解析：', res);
	// 					// this.position = res.regeocode;

	// 					// this.position = res.result;
	// 					// this.formatPosition();

	// 					callback(res.result);
	// 				},
	// 				fail: (err) => {
	// 					vk.alert(JSON.stringify(err), '获取定位失败');
	// 					callback(null);
	// 				}
	// 			});
	// 		},
	// 		fail: err => {
	// 			console.log('获取定位失败：', err);
	// 			vk.alert('请打开手机定位后重新进入应用', '手机定位未开启');
	// 			callback(null);
	// 		}
	// 	});
	// },

	// 入口：选择图片
	/**
	 * @param {Object} callback
	 * @param {Object} encoding 传 'base64'，则返回值中追加 'base64'
	 * @return {Object} filepath：文件路径, file：文件, base64：不带编码头的base64
	 */
	chooseImage(callback, encoding) {
		// console.log('工具-选择图片 in', callback)
		uni.chooseImage({
			count: 1, //默认9
			sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图，默认二者都有
			sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机，默认二者都有
			success: (res) => {
				console.log('工具-选择图片 uni.chooseImage', res, res.tempFilePaths[0])
				
				if(!encoding) callback({
					filepath: res.tempFilePaths[0],
					file: res.tempFiles[0]
				});
				else if (encoding == 'base64'){
					// #ifdef MP-WEIXIN
					// 返回base64 不带编码头（data:image/jpeg;base64, ）
					uni.getFileSystemManager().readFile({
						filePath: res.tempFilePaths[0], //选择图片返回的相对路径
						encoding: 'base64', //编码格式
						success: res1 => { //成功的回调
							console.log('工具-选择图片转base64', res1)
							// callback(res.data.replace(/[\r\n]/g, '')); // 将回车换行换为空字符''
							callback({
								filepath: res.tempFilePaths[0],
								file: res.tempFiles[0],
								base64: res1.data.replace(/[\r\n]/g, '') // 将回车换行换为空字符''
							});
						}
					})
					
					// // 返回文件路径
					// callback(res.tempFilePaths[0]);
					
					// // 返回base64 带编码头（data:image/jpeg;base64, ）
					// vk.pubfn.fileToBase64({
					// 	file: res.tempFiles[0],
					// 	success: (base64) => { // 有编码头 data:image/jpeg;base64,
					// 		callback(base64);
					// 	}
					// });
					
					// #endif
					// #ifndef MP-WEIXIN
					uni.request({
						url: res.tempFilePaths[0],
						method: 'GET',
						responseType: 'arraybuffer',
						success: res1 => {
							// console.log('工具-选择图片 H5', res1)
							// callback(uni.arrayBufferToBase64(res1.data).replace(/[\r\n]/g, ''));
							callback({
								filepath: res.tempFilePaths[0],
								file: res.tempFiles[0],
								base64: uni.arrayBufferToBase64(res1.data).replace(/[\r\n]/g, '') // 将回车换行换为空字符''
							});
						}
					})
					// #endif
				}
				else{
					console.log('未开发'+encoding)
				}
			},
			fail: err => {
				console.log(err)
				if (err.errno == 112) {
					vk.alert('抱歉由于微信《用户隐私保护指引》规定，导致本程序无法使用您的拍照和相册功能。')
					return
				}
			}
		});
	},

	// 上传并识别身份证
	uploadOcrIdCard() {

	},
	// 上传并识别营业执照
	uploadOcrBusinessLicense(callback) {
		this.chooseImage((imageRes) => {
			// console.log('tools-上传并识别营业执照', imageRes)
			vk.openapi.baidu.open.ocr.business_license({
				title: "识别中...",
				needAlert: false,
				data: {
					image: imageRes.base64,
					// file: filepath
				},
				success: (res) => {
					console.log('tools-百度AI营业执照识别success', res)
					/*
					资源上限：{code: 18, msg: "Open api qps request limit reached"}
					{log_id: 1736924322558668000, code: 282111, msg: "url format illegal"}
					许可证-报错：{log_id: 1736930348264968000, code: 282103, msg: "recognize error, failed to match the template"}
					营业执照-成功：{words_result: {…}, direction: 3, words_result_num: 16, log_id: 1736933655523427000}
					
					words_result:
					单位名称: {location: {…}, words: "沈阳和君智能科技有限公司"}
					地址: {location: {…}, words: "辽宁省沈阳市浑南区营城子大街205号7#352"}
					实收资本: {location: {…}, words: "无"}
					成立日期: {location: {…}, words: "2021年09月14日"}
					有效期: {location: {…}, words: "长期"}
					有效期起始日期: {location: {…}, words: "2021年09月14日"}
					核准日期: {location: {…}, words: "2021年12月07日"}
					法人: {location: {…}, words: "杨金梁"}
					注册资本: {location: {…}, words: "50万元"}
					登记机关: {location: {…}, words: "沈阳市浑南区市场监督管理局"}
					社会信用代码: {location: {…}, words: "91210112MA11D7448D"}
					税务登记号: {location: {…}, words: "无"}
					类型: {location: {…}, words: "有限责任公司(自然人独资)"}
					组成形式: {location: {…}, words: "无"}
					经营范围: {location: {…}, words: "一般项目:计算机软硬件及辅助设备批发,通讯设备销售,智能机器人销售,人工智能硬件销售,智能物料搬运装…软件外包服务,人工智能理论与算法软件开发(除依法须经批准的项目外,凭营业执照依法自主开展经营活动)"}
					证件编号: {location: {…}, words: "无"}
					
					身份证-非身份证：{words_result: {…}, words_result_num: 0, idcard_number_type: -1, image_status: "other_type_card", log_id: 1736925413470299100}
					身份证-成功：{words_result: {…}, words_result_num: 6, idcard_number_type: 1, image_status: "normal", log_id: 1736925946784031700}
					*/
					// res["base64"] = base64;
					res["filepath"] = imageRes.filepath;
					callback(res)
				},
				fail: (err) => {
					console.log('tools-百度AI营业执照识别err', err)
					callback(this.baiduError(err))
				}
			});
		}, 'base64')  // 'base64'则选中图片接口会追加返回base64
	},
	// 上传并识别许可证
	uploadOcrXukezheng(cardType, callback) {
		let templateSign;
		if (cardType == '食品经营许可证') {
			templateSign = '2a92268653a08b7f337774a86ba781aa';
		}
		this.chooseImage(imageRes => {
			vk.openapi.baidu.request({
				action: 'solution/v1/iocr/recognise',
				actionVersion: "2.0",
				title: "识别中...",
				data: {
					image: imageRes.base64, // 需去掉编码头（data:image/jpeg;base64, ）
					// url: imageRes.filepath, // 由于防盗链，尽量不要使用url
					templateSign
				},
				success: (res) => {
					console.log('百度AIiOCR通用版success', res)
					// res["base64"] = base64;
					res["filepath"] = imageRes.filepath;
					callback(res)
				},
				fail: (err) => {
					console.log('tools-百度AI自定义OCR识别err', err)
					callback(this.baiduError(err))
				}
			});
		}, 'base64')  // 'base64'则选中图片接口会追加返回base64
	},
	baiduError(err) {
		let { code, msg } = err;
		if (code === 17) msg = '每天请求量超限额，请联系客服';
		else if (code === 18) msg = 'QPS超限额，请稍后重试，或联系客服';
		else if (code === 19) msg = '请求总量超限额，请联系客服';
		else if (code === 216201) msg = '上传的图片格式化错误，请联系客服';
		else if (code === 282111) msg = '上传的图片URL格式非法，请联系客服';
		else if (code === 282103) msg = '您上传的图片错误、不完整或模糊，请重新上传正确、清晰的图片';

		return { code, msg }
	},
	htzUploadSuccess(res){
		console.log('上传图片成功', res)
		var _res = JSON.parse(res.data);
		// "{"imgurl":"Uploads/TaiZhang/202404/202404291012191219.jpg","message":"图片上传成功","code":1}"
		if (_res.code === 1) { // 这里根据接口返回值修改判断条件
			return {
				success: true,
				url: imageDomain + _res.imgurl
			}
		} else {
			uni.showToast({
				title: '照片上传失败！错误信息如下：' + JSON.stringify(res),
				icon: 'none',
				duration: 2000
			});
			return {
				success: false,
				url: ''
			}
		}
	},
	/** 
	 * 处理图片地址：将无前缀的图片地址加上图片服务器的域名
	 * @param {Object} url 图片地址
	 * 
	 */
	addImageDomain(url){
		return url ? (url.split(separator).map(item => imageDomain + item).join(separator)) : ''
	}
}